﻿package com.h819.core.file.pdf.itext;

import com.h819.core.file.MyFileUtils;
import com.h819.core.utils.MyMessageException;
import com.itextpdf.text.DocumentException;
import org.apache.log4j.Logger;

import java.io.File;
import java.io.IOException;

/*
 * 
 * 主要参考 ItextSamples 中的方法
 * 
 * */

// http://itcheng.iteye.com/blog/1327625 也可参考

public class PDFUtils extends PDFUtilsBase {

	private static Logger log = Logger.getLogger(PDFUtils.class);

	/**
	 * 首都标准网专用方法，一些参数固定
	 * 
	 * @param srcDir
	 *            源文件夹
	 * @param destDir
	 *            目标
	 * @param imageFile
	 *            水印图片
	 * @param companyName
	 *            授权接受者公司名称，如"东城稻香村集团"
	 * @throws IOException
	 * @throws MyMessageException
	 */
	public static void addWaterMarkToCapital(File srcDir, File destDir,
			File imageFile, String companyName) throws IOException,
			MyMessageException {

		// 模板文件
		MyFileUtils mf = new MyFileUtils();

		String template_filepath = null;

		String[] ss = mf.copyResourceFileFromJarLibToTmpDir(
				new String[] { "/STCAIYUNs.TTF" }, "fonttemp", PDFUtils.class);
		template_filepath = ss[0];

		if (companyName == null)
			addWatermark(srcDir, destDir, imageFile,
					new File(template_filepath), "授权文件", " . 不得传播", "首都标准网",
					"http://www.capital-std.com");
		else
			addWatermark(srcDir, destDir, imageFile,
					new File(template_filepath), companyName, " . 专用 . 不得传播",
					"首都标准网", "http://www.capital-std.com");

	}

	/**
	 * 加密 pdf 文件，不允许打印，不允许拷贝，不允许保存
	 * 
	 * @param srcPdfFile
	 *            源文件
	 * @param descPdfFile
	 *            目标文件
	 * @throws IOException
	 */
	public static void encryptPdf(File srcPdfFile, File descPdfFile)
			throws IOException {

		encryptPdf(srcPdfFile, descPdfFile, null, null, false, false, false,
				false);

	}

	public static void main(String[] args) throws IOException,
			MyMessageException, DocumentException {
		// TODO Auto-generated method stub

		PDFUtils p = new PDFUtils();
		// p.addWaterMarkToCapital(new File("D:\\002"), new File("D:\\002\\03"),
		// null, null);

		// decryptPdf(new File("D:\\download\\02\\"), new File(
		// "D:\\download\\02pdf\\"),new File(
		// "D:\\download\\02badpdf\\"));

		// decryptPdf(new File("I:\\cctv 2009\\01\\IB2_4\\"));
		// decryptPdf(new File("d:\\001"));

	}
}
